06. 让 git 忽略某些文件
## 为何要忽略文件
还记得在几个章节之前学习的
git add
吗?我们可以使用一个特殊的字符来表示当前目录和所有子目录,而不用一个个地添加文件。还记得是什么字符吗?
没错,是句点 (
.
)!
问题
假设你向项目所在目录添加了一个 Word 文档等文件,但是不希望将该文件添加到仓库中。git 会看到这个新文件,所以在你运行
git status
时,它将显示在文件列表中。
终端显示了
git status
命令的输出结果。git 的"Untracked files"部分显示了新的 Word 文档。
在项目中包含此文件存在的潜在问题是,因为
git add .
会添加所有文件,因此该 Word 文档可能会不小心 commit 到仓库。
gitignore
如果你想将某个文件保留在项目的目录结构中,但是确保它不会意外地提交到项目中,可以使用名称特殊的文件
.gitignore
(注意文件名开头的点,很重要!)。将此文件添加到
new-git-project
项目根目录。你只需列出希望 git ignore(忽略,不跟踪)的文件名,git 将忽略这些文件。
我们用"project.docx"文件试一下。将以下行添加到
.gitignore
文件中:
project.docx
现在运行
git status
并查看输出结果:
终端显示了
git status
的输出结果。Word 文档已不再列为未跟踪文件。但是列出了新的".gitignore"文件。
git 知道查看名称为
.gitignore
的文件的内容。因为它在其中看到"project.docx",所以忽略了该文件,并且没有在
git status
的输出结果中显示该文件。
通配符速成课程
假设你向项目中添加了 50 个图片,但是希望 git 忽略所有这些图片。这样的话,是否需要将每个文件名都列在
.gitignore
文件中呢?当然不用了,要不然太可怕了!相反,你可以采用一个叫做
通配符(
英
)
的概念。
通配符允许你使用特殊的字符来表示某些格式/字符。在
.gitignore
文件中,你可以使用:
- 空白行作为空格
-
#- 将行标记为注释 -
*- 与 0 个或多个字符匹配 -
?- 与 1 个字符匹配 -
[abc]- 与 a、b 或 c 匹配 -
**- 与嵌套目录匹配 -a/**/z与以下项匹配- a/z
- a/b/z
- a/b/c/z
因此如果所有 50 个图片都是 JPEG 图片,并且位于"samples"文件夹中,那么我们可以向
.gitignore
中添加以下行,使 git 忽略所有这 50 个图片。
samples/*.jpg
哪些文件将被忽略?
SOLUTION:
- trees.png
- bg-pattern.png
- LOUDFILE.PNG
这个字符的作用是什么?
SOLUTION:
- bears
- beers
gitignore 小结
总结下,
.gitignore
文件用来告诉 git 不应跟踪的文件。该文件应该放在
.git
目录所在的目录。
深入研究
-
gitignore - 英 git 文档
-
忽略文件 - 英 GitHub 文档